package 特殊文件.Properties属性文件;

// 主要学什么
// 1. 了解他们的特点, 作用
// 2.

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Properties;

public class Test {
    public static void main(String[] args) throws Exception {
        // 属性文件

        // 1. 了解他们的特点, 作用
        //    a. 都只能是键值对
        //    b. 键不能重复
        //    c. 文件后缀一般是.properties结尾的

        // 2. 学习使用程序读取他们里面的数据
        //    Properties: 是一个Map集合(键值对集合), 但是我们一般不会当集合使用
        //    核心作用: Properties是用来代表属性文件的, 通过Properties可以读写属性文件里的内容

        // 了解使用Properties
        //  要用Properties读取属性文件里的键值对数据
        // 构造器:
        // public Properties(): 用于构建Properties集合对象(空容器)
        // 方法:
        // 1. public void load(InputStream is): 通过字节输入流, 读取属性文件里的键值对数据
        // 2. public void load(Reader reader): 通过字节输出流, 读取属性文件里的键值对数据
        // 3. public String getProperty(String key): 根据键获取值 (其实就是get方法的效果)
        // 4. public Set<String> stringPropertyNames(): 获取全部键的集合 (其实就是ketSet方法的效果)

        // 用Properties把键值对数据写出到属性文件里去
        // 构造器
        // public Properties(): 用于构建Properties集合对象(空容器)
        // 方法
        // 1. public Object setProperty(String key, String value): 保存键值对数据到Properties对象中去
        // 2. public void store(OutputStream os, String comments): 把键值对数据, 通过字节输出流写出到属性文件里去
        // 3. public void store(Writer w, String comments): 把键值对数据, 通过字符输出流写出到属性文件里去


        // 3. 学习使用程序把数据存储到这些文件里
        // a. 创建一个Properties对象出来(键值对集合, 空容器)
        Properties properties = new Properties();
        System.out.println(properties);
        // b. 开始加载属性问及那中的键值对数据到properties对象中去
        properties.load(new FileReader("Senior\\src\\特殊文件\\pat.txt"));
        System.out.println(properties);
        System.out.println(properties.getProperty("赵敏"));

        // 4. 学习使用程序把键值对数据储存到属性文件中去
        // a. 创建一个Properties对象出来, 先用它存储一些键值对数据
        Properties properties1 = new Properties();
        properties1.setProperty("张无忌", "zhangwuji");
        properties1.setProperty("殷素素", "yinsusu");
        properties1.setProperty("张翠山", "zhangcuishan");
        // b. 把properties对象中的键值对数据存入到属性文件中去
        properties1.store(new FileWriter("Senior\\src\\特殊文件\\pat1.txt"), "i save many users!");
    }
}
